// 引入db.js中的mongoose模块
const mongoose = require('./db')

// 创建模型对象
const Schema = mongoose.Schema;


// 权限，角色，用户三表之间关联
// 角色和用户是一对多的关系，每个用户有一个角色，每个角色可以分配给多个用户
// 角色和权限之间是多对多的关系，每个角色可以分配多个权限，每个权限也可以分配给多个角色

// 创建权限模型
let permissionSchema = new Schema({
    permission_name : String,  // 权限名称
    permission_url : String,  // 权限路由
    permission_level : Number,  // 权限等级
    parent_id:String  // 父级id
})

// 将权限模型映射成表
const permissionModel = mongoose.model("permission",permissionSchema)

// 创建角色模型
const roleSchema = new Schema({
    roleName: String,
    roleDesc: String
});

// 将角色模型映射成表
const roleModel = mongoose.model("role", roleSchema)


// 创建用户模型
const userSchema = new Schema({
    username: String,  // 用户名
    password: String,  // 密码
    tel: String,  // 手机号
    birth: String,  // 生日
    email: String,  // 邮箱
    token: String,  // token
    mg_state: {  // 状态，判断是否可以登录
        type: Boolean,
        default: true
    },
    role_id:{
        type: mongoose.Types.ObjectId,
        ref: 'role'
    }
})

// 将用户信息模型映射成表
const userModel = mongoose.model("user", userSchema);

// 创建角色权限关联模型  // 多对多关系
const role_perm_Schema = new Schema({
    roleid : {  // 角色id
        type:Schema.Types.ObjectId,
        ref:"role"
    },
    permid : {  // 权限id
        type:Schema.Types.ObjectId,
        ref:"permission"
    }
});

// 将多对多关联表映射成表
const role_perm_Model = mongoose.model("role_perm",role_perm_Schema)




// 商品品牌和商品分类是商品表的父级表，每次添加商品的话都会选择商品品牌和商品分类，商品分类只能选择二级分类， 商品订单是和用户挂钩的，用户的订单关联关系一对多，每个用户登录的订单都是不同的，私有化


// 创建商品品牌模型
let brandSchema = new Schema({
    brandname : String,  // 品牌名称
    brandimg : String,  // 品牌图标路径
    brandsort:Number,  // 品牌排序
    is_del:{  // 是否删除
        default:1, //0 标识删除
        type:Number
    }
})
const brandModel = mongoose.model("brand",brandSchema)

// 商品分类模型
let categorySchema = new Schema({
    categoryname : String,  // 分类名称
    cate_pid : String,  // 父级id
    cate_level: Number  // 等级
},{versionKey: false})
const catgoryModel = mongoose.model("category",categorySchema)

// 商品表模型
let goodsSchema = new Schema({
    goods_name : String,  // 商品名称
    goods_price : Number,  // 商品价格
    goods_weight : String,  // 商品重量
    cate_id : {  // 商品分类id
        type : Schema.Types.ObjectId,
        ref : "category"
    },
    brand_id : {  // 品牌id
        type : Schema.Types.ObjectId,
        ref : "brand"
    },
    is_del : Number,  // 是否删除
    add_time : String,  // 添加事件
    goods_small_logo:String,//商品缩略图
    upd_time : String,  // 修改时间
    goods_number:Number  // 商品数量
})
const goodsModel = mongoose.model("good",goodsSchema)


// 订单
const orderSchema = new Schema({
    user_id : {  // 关联用户id
        type:Schema.Types.ObjectId,
        ref : "user"
    },
    order_number:String, //订单编号
    order_price:Number,  // 订单商品价格
    order_pay:String,   // 订单支付
    is_send : String, //是否发货
    order_fapiao_content:String, //发票内容
    order_fapiao_title:String, //发票抬头
    order_fapiao_company:String,//公司名称
    consignee_addr:String, //发货地址
    pay_status:String, //支付状态
    create_time:String,   // 创建时间
    update_time:String  // 修改时间
})

const orderModel = mongoose.model("order",orderSchema)


// 将所有模块暴露
module.exports = {
    permissionModel,
    roleModel,
    userModel,
    role_perm_Model,
    brandModel,
    catgoryModel,
    goodsModel,
    orderModel
}